package com.shuke.medical.insure.controller;

import com.alibaba.fastjson.JSONObject;
import com.shuke.medical.insure.model.convert.ChsBaseInfoConvert;
import com.shuke.medical.insure.model.dto.GetChronicDiseaseRecordDTO;
import com.shuke.medical.insure.model.dto.GetChsPersonBaseInfoDTO;
import com.shuke.medical.insure.model.dto.GetChsPersonDetaileddDTO;
import com.shuke.medical.insure.model.vo.*;
import com.shuke.medical.insure.service.ChsBaseInfoService;
import com.shuke.medical.insure.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;


/**
 * @author woo hua
 * @date 2022/1/4 17:03
 */
@RestController
@RequestMapping("chsBaseInfo")
@Slf4j
public class ChsBaseInfoController {
    @Resource
    private ChsBaseInfoService chsBaseInfoService;

    /**
     * 获取人员基本信息 （所有参数必传，类型为数值的参数，如果为空，必须传“0”，其他为空串（“”），TXT 文件中空值使用“null”。）
     *
     * @param dto
     * @return
     */
    @PostMapping("/getChsPersonBaseInfo")
    public R<List<GetChsPersonBaseInfoNoAnnotateVO>> getChsPersonBaseInfo(@RequestBody @Validated GetChsPersonBaseInfoDTO dto) throws Exception {
        log.info("获取人员基本信息,dto", JSONObject.toJSONString(dto));
        List<GetChsPersonBaseInfoVO> chsPersonBaseInfo = chsBaseInfoService.getChsPersonBaseInfo(dto);
        List<GetChsPersonBaseInfoNoAnnotateVO> getChsPersonBaseInfoNoAnnotateVOS = ChsBaseInfoConvert.INSTANCE.toVos(chsPersonBaseInfo);

        return R.ok(getChsPersonBaseInfoNoAnnotateVOS);
    }

    /**
     * 获取人员详细信息(根据观察，2.0是用这个接口门特)（所有参数必传，类型为数值的参数，如果为空，必须传“0”，其他为空串（“”），TXT 文件中空值使用“null”。）
     *
     * @param dto
     * @return
     */
    @PostMapping("/getChsPersonDetailed")
    public R<List<GetChsPersonDetailedNoAnnotateVO>> getChsPersonDetailed(@RequestBody @Validated GetChsPersonDetaileddDTO dto) throws Exception {
        log.info("获取人员详细信息接口,dto", JSONObject.toJSONString(dto));
        List<GetChsPersonDetailedVO> chsPersonBaseInfo = chsBaseInfoService.getChsPersonDetailed(dto);
        List<GetChsPersonDetailedNoAnnotateVO> getChsPersonDetailedNoAnnotateVOS = ChsBaseInfoConvert.INSTANCE.toVos2(chsPersonBaseInfo);

        return R.ok(getChsPersonDetailedNoAnnotateVOS);
    }

    /**
     * 慢特病备案查询接口（所有参数必传，类型为数值的参数，如果为空，必须传“0”，其他为空串（“”），TXT 文件中空值使用“null”。）
     *
     * @param dto
     * @return
     */
    @PostMapping("/getChronicDiseaseRecord")
    public R<List<GetChronicDiseaseRecordNoAnnotateVO>> queryChronicDiseaseRecord(@RequestBody @Validated GetChronicDiseaseRecordDTO dto) throws Exception {
        log.info("慢特病备案查询接口,dto", JSONObject.toJSONString(dto));
        List<GetChronicDiseaseRecordVO> chsPersonBaseInfo = chsBaseInfoService.getChronicDiseaseRecord(dto);
        List<GetChronicDiseaseRecordNoAnnotateVO> getChronicDiseaseRecordNoAnnotateVOS = ChsBaseInfoConvert.INSTANCE.toVos3(chsPersonBaseInfo);

        return R.ok(getChronicDiseaseRecordNoAnnotateVOS);
    }

}
